package com.ctshk.rpc.localfun.dto;

import com.ctshk.common.req.MainData;
import com.ctshk.common.utils.anno.ColumnMapping;
import com.ctshk.rpc.localfun.req.LocalFunResourceStrategyReq;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Description
 * @Author wansi <gaylen15527491065@yeah.net>
 * @Date 2021/3/24
 */
@Data
public class LocalFunResourceDetailDTO implements Serializable {

    @ApiModelProperty(value = "产品来源(1 API ,2 手动录入)")
    private Integer sourceType;

    @ApiModelProperty(value = "产品编号")
    private String productCode;

    @ApiModelProperty(value = "所属城市")
    private Long cityId;

    @ApiModelProperty(value = "产品ID")
    private Long productId;

    @ApiModelProperty(value = "城市名称")
    private String cityName;

    @ApiModelProperty(value = "当地游玩产品ID")
    private Long funType;

    @ApiModelProperty(value = "当地游玩产品名称")
    private String funName;

    @ApiModelProperty(value = "产品名称")
    private String name;

    @ApiModelProperty(value = "供应商")
    private Long supplierId;

    @ApiModelProperty(value = "供应商名称")
    private String supplierName;

    @ApiModelProperty(value = "负责人ID")
    private Long chargeUserId;

    @ApiModelProperty(value = "负责人名称")
    private String chargeUser;

    @ApiModelProperty(value = "适用人群ID")
    private Long intendedUserId;

    @ApiModelProperty(value = "适用人群")
    private String intendedUser;

    @ApiModelProperty(value = "是否允许自由行打包(1 允许,2 不允许,3 只限打包)")
    private Integer allowPackage;

    @ApiModelProperty(value = "是否允许自由行打包")
    @ColumnMapping(fieldId = "allowPackage",mapping = {"1","允許","2","不允許","3","只限打包"})
    private String allowPackageDesc;

    @ApiModelProperty(value = "产品图片JSON")
    private String photosJson;

    @ApiModelProperty(value = "主题")
    private String themeJson;

    @ApiModelProperty(value = "封面图地址")
    private String overImage;

    @ApiModelProperty(value = "产品特色")
    private String futureJson;

    @ApiModelProperty(value = "产品介绍")
    private String productIntroduces;

    @ApiModelProperty(value = "使用说明")
    private String useInstructions;

    @ApiModelProperty(value = "开售时间类型(1 立即开售,2 定时开售)")
    private Integer startSaleTimeType;

    @ApiModelProperty(value = "开售时间类型(1 立即开售,2 定时开售)")
    @ColumnMapping(fieldId = "startSaleTimeType",mapping = {"1","立即开售","2","定时开售"})
    private String startSaleTimeTypeDesc;

    @ApiModelProperty(value ="开售时间起始")
    private LocalDateTime startSaleTimeBegin;

    @ApiModelProperty(value = "开售时间结束")
    private LocalDateTime startSaleTimeEnd;

    @ApiModelProperty(value = "开售时间类型")
    private String startSaleScope;

    @ApiModelProperty(value = "预订确认(1 立即确认,2 二次确认)")
    private Integer bookConfirm;

    @ApiModelProperty(value = "预订确认")
    @ColumnMapping(fieldId = "bookConfirm",mapping = {"1","立即确认","2","二次确认"})
    private String bookConfirmDesc;

    @ApiModelProperty(value = "取消政策(1 限时取消,2 不退不改)")
    private Integer cancelPolicy;

    @ApiModelProperty(value = "取消政策")
    @ColumnMapping(fieldId = "cancelPolicy",mapping = {"1","限时取消","2","不退不改"})
    private String cancelPolicyDesc;

    @ApiModelProperty(value = "预订退改须知")
    private String customerNotice;

    @ApiModelProperty(value = "预订服务费类型")
    private Integer reserveChargeType;

    @ApiModelProperty(value = "预订服务费类型")
    @ColumnMapping(fieldId = "reserveChargeType",mapping = {"0","加數值","1","加百分比"})
    private String reserveChargeTypeDesc;

    @ApiModelProperty(value = "预订服务费")
    private BigDecimal reserveCharge;

    @ApiModelProperty(value = "中旅退改费用类型")
    private Integer ctsChargeType;

    @ApiModelProperty(value = "中旅退改费用类型")
    @ColumnMapping(fieldId = "ctsChargeType",mapping = {"0","加數值","1","加百分比"})
    private String ctsChargeTypeDesc;

    @ApiModelProperty(value = "中旅退改服务费")
    private BigDecimal ctsCharge;

    @ApiModelProperty(value = "是否需要填写证件信息")
    private Integer needInfo;

    @ApiModelProperty(value = "使用有效期类型(1 固定天数 ,2 指定日期区间)")
    private Integer vaildType;

    @ColumnMapping(fieldId = "vaildType",mapping = {"1","固定天数","2","指定日期区间"})
    @ApiModelProperty(value = "使用有效期类型(1 固定天数 ,2 指定日期区间)")
    private String vaildTypeDesc;

    @ApiModelProperty(value = "几日有效")
    private Double vaildDay;


    @ApiModelProperty(value = "有效期起始")
    private LocalDateTime vaildDayBegin;

    @ApiModelProperty(value = "有效期截至")
    private LocalDateTime vaildDayEnd;

    @ApiModelProperty(value = "使用有效期")
    private String validateScope;

    @ApiModelProperty(value = "證件字典信息")
    private List<MainData> mainData;

    @ApiModelProperty("证件ID")
    private List<String> certificateTypeList;


    @ApiModelProperty(value = "规格策略")
    private List<LocalFunResourceStrategyReq> localFunResourceStrategy;
}
